/* 格式化相对日期
重要程度: 4
写一个函数 formatDate(date)，能够对 date 进行如下格式化：

如果 date 距离现在不到 1 秒，输出 "right now"。
否则，如果 date 距离现在不到 1 分钟，输出 "n sec. ago"。
否则，如果不到 1 小时，输出 "m min. ago"。
否则，以 "DD.MM.YY HH:mm" 格式输出完整日期。即："day.month.year hours:minutes"，全部以两位数格式表示，例如：31.12.16 10:00 */

const formatDate = (date = new Date()) => {
  let timeDifference = Date.now() - date;
  let time = [
    "0" + date.getDate(),
    "0" + (date.getMonth() + 1),
    "" + date.getFullYear(),
    "0" + date.getHours(),
    "0" + date.getMinutes(),
  ].map((item) => {
    return item.slice(-2);
  });
  switch (true) {
    case timeDifference / 1000 < 1:
      return "right now";
    case timeDifference / 1000 < 60:
      return `${parseInt(timeDifference / 1000)}秒前`;
    case timeDifference / 1000 < 3600:
      return `${parseInt(timeDifference / 1000 / 60)}分钟前`;
    default:
      return `${time[0]}.${time[1]}.${time[2]} ${time[3]}:${time[4]}`;
  }
};

console.log(formatDate(new Date(new Date() - 1))); // "right now"

console.log(formatDate(new Date(new Date() - 30 * 1000))); // "30 sec. ago"

console.log(formatDate(new Date(new Date() - 5 * 60 * 1000))); // "5 min. ago"

// 昨天的日期，例如 31.12.16 20:00
console.log(formatDate(new Date(new Date() - 86400 * 1000)));
